Loading...
 

Implementacja w MATLABie problemu projekcji bitmapy

W module tym przedstawiamy dwa kody MATLABa obliczające izogeometryczną L2 projekcję bitmapy. Kody używają izogeometrycznej metody elementów skończonych, w której to bitmapa aproksymowana jest za pomocą kombinacji liniowej wielomianów B-spline.
Wykonanie kodu\ów możliwe jest również w darmowym środowisku Octave(external link).

Pobierz kod 1(external link) lub zob. Załącznik 1.

Pobierz kod 2(external link) lub zob. Załącznik 1.

W celu uruchomienia kodów zapisujemy je w katalogu roboczym Octave.
Ustawiamy zmienne ze ścieżką do pliku wejściowego w formacie tif
\( filename = 'C://Users/Maciej/Dropbox/bitmapa.tif' \)
następnie podajemy ilość elementów siatki w kierunku osi x i y oraz stopnie funkcji B-spline w tych kierunkach
\( nx=4 \)
\( ny=4 \)
\( px=2 \)
\( py=2 \)
Następnie uruchamiamy pierwszą procedurę
\( bitmap\_param(filename,nx,ny,px,py) \).
Kod po zbudowaniu układu równań i rozwiązaniu go rysuje projekcje bitmapy w otwartym okienku.
Pierwszy kod oblicza izogeometryczną L2 projekcję bitmapy, generuje wartości funkcji B-spline zgodnie z rekurencyjnej definicji. Podczas całkowania, oblicza on kwadratury Gaussa na
\( (Ne_x+px)(Ne_y+py) \) elementach, próbkując wartości funkcji B-spline. Woła on funkcje rekurencyjne wiele razy dla wielu punktów kwadratury Gaussa.
Przez to jest on bardzo wolny. Nawet dla 4*4=16 elementów działa ona stosunkowo długo, a zwiększenie liczby elementów zwiększa czas działania programu tak, jak funkcja kwadratowa liczby elementów.
Dlatego zaproponowaliśmy drugą procedurę
\( bitmap\_fast(filename,nx,ny,px,py) \), w której w tablicy umieszczono przeliczone wcześniej wartości funkcji B-spline, w kierunku osi poziomej i pionowej. Zamiast liczyć je na \( (Ne_x+px)(Ne_y+py) \) elementach, czytamy ich wartości z tablicy. Operacja ta przyspiesza działanie kodu o 2 rzędy wielkości.
Żeby bardziej przyspieszyć kod konieczne jest zastąpienie MATLABowej procedury backslash (\ stosowanej do rozwiązania wygenerowanego układu równań) solwerem zmienno-kierunkowym.


Ostatnio zmieniona Piątek 08 z Lipiec, 2022 10:02:05 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.